์ž‘์„ฑ: 2026-03-04 04:03:38์ˆ˜์ •: 2026-03-04 04:03:38

์ฃผ์š” ํ†ต์‹  ํ”„๋กœํ† ์ฝœ ๋น„๊ต: HTTP, WebSocket, MQTT

ํ˜„๋Œ€์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‹จ์ˆœํžˆ ์›น ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์„ ๋„˜์–ด ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…, ์ฃผ์‹ ์‹œ์„ธ ์—…๋ฐ์ดํŠธ, ์Šค๋งˆํŠธํ™ˆ ๊ธฐ๊ธฐ ์ œ์–ด ๋“ฑ ๋‹ค์–‘ํ•œ ํ†ต์‹  ๋ฐฉ์‹์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์ƒํ™ฉ์— ์ตœ์ ํ™”๋œ 3๋Œ€ ํ”„๋กœํ† ์ฝœ์„ ๋น„๊ตํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


1. HTTP (HyperText Transfer Protocol)

๊ฐ€์žฅ ๋Œ€์ค‘์ ์ธ ๋น„์—ฐ๊ฒฐ์„ฑ(Connectionless) ๊ธฐ๋ฐ˜์˜ ์š”์ฒญ-์‘๋‹ต(Request-Response) ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.

  • ๋ฐฉ์‹: ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•˜๊ณ  ์—ฐ๊ฒฐ์„ ๋Š์Šต๋‹ˆ๋‹ค.
  • ์žฅ์ : ์„ค๊ณ„๊ฐ€ ๋‹จ์ˆœํ•˜๊ณ  ํ‘œ์ค€ํ™”๋˜์–ด ์žˆ์–ด ์–ด๋””์„œ๋“  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, REST API์˜ ๊ธฐ๋ฐ˜์ด ๋ฉ๋‹ˆ๋‹ค.
  • ๋‹จ์ : ์‹ค์‹œ๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•ด 'ํด๋ง(Polling)' ๋ฐฉ์‹์„ ์จ์•ผ ํ•˜๋ฏ€๋กœ ์„œ๋ฒ„ ๋ถ€ํ•˜๊ฐ€ ํฌ๊ณ  ํ—ค๋” ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ์ฃผ์š” ์šฉ๋„: ์ผ๋ฐ˜์ ์ธ ์›น ์„œํ•‘, ๋ฌธ์„œ/์ด๋ฏธ์ง€ ์ „์†ก, ์ผ๋ฐ˜์ ์ธ ๋ฐ์ดํ„ฐ API.

2. WebSocket (์›น์†Œ์ผ“)

HTML5 ํ‘œ์ค€์˜ ์ผ๋ถ€๋กœ ๋„์ž…๋œ ์ „์ด์ค‘(Full-Duplex) ์–‘๋ฐฉํ–ฅ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.

  • ๋ฐฉ์‹: ์ฒ˜์Œ์— HTTP๋กœ ์—ฐ๊ฒฐ(Handshake)์„ ๋งบ์€ ๋’ค, ์ „์šฉ ํ”„๋กœํ† ์ฝœ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์—ฌ ์—ฐ๊ฒฐ์„ ๊ณ„์† ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ์žฅ์ : ํ•œ ๋ฒˆ ์—ฐ๊ฒฐ๋˜๋ฉด ํ—ค๋”๊ฐ€ ๋งค์šฐ ์ž‘์•„ ํ†ต์‹  ํšจ์œจ์ด ๋†’๊ณ , ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์–ธ์ œ๋“  ๋จผ์ € ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹จ์ : ์—ฐ๊ฒฐ์„ ๊ณ„์† ์œ ์ง€ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋™์‹œ ์ ‘์†์ž๊ฐ€ ๋งŽ์„ ๋•Œ ์„œ๋ฒ„ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€๋‹ด์ด ํฝ๋‹ˆ๋‹ค.
  • ์ฃผ์š” ์šฉ๋„: ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…, ์ฃผ์‹ ์‹œ์„ธ ๋Œ€์‹œ๋ณด๋“œ, ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด์–ด ๊ฒŒ์ž„.

3. MQTT (Message Queuing Telemetry Transport)

์ง€์—ฐ ์‹œ๊ฐ„์ด ๊ธธ๊ฑฐ๋‚˜ ๋„คํŠธ์›Œํฌ๊ฐ€ ๋ถˆ์•ˆ์ •ํ•œ ํ™˜๊ฒฝ์—์„œ ๋™์ž‘ํ•˜๋„๋ก ์„ค๊ณ„๋œ ๋ฐœํ–‰-๊ตฌ๋…(Pub/Sub) ๊ธฐ๋ฐ˜์˜ ๊ฒฝ๋Ÿ‰ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.

  • ๋ฐฉ์‹: ์ค‘๊ฐ„์— ๋ธŒ๋กœ์ปค(Broker)๋ฅผ ๋‘๊ณ , ํด๋ผ์ด์–ธํŠธ๋Š” ํŠน์ • ์ฃผ์ œ(Topic)๋ฅผ ๊ตฌ๋…ํ•˜๊ฑฐ๋‚˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐœํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ์žฅ์ : ํ—ค๋”๊ฐ€ ๋งค์šฐ ์ž‘๊ณ (์ตœ์†Œ 2๋ฐ”์ดํŠธ), ์ €์ „๋ ฅ/์ €๋Œ€์—ญํญ ํ™˜๊ฒฝ์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. QoS(์ „์†ก ํ’ˆ์งˆ ๋ณด์žฅ) ์˜ต์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹จ์ : ์ค‘์•™ ๋ธŒ๋กœ์ปค ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ, ์ผ๋ฐ˜์ ์ธ ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ์ง์ ‘ ์ง€์›ํ•˜์ง€ ์•Š์•„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ฃผ์š” ์šฉ๋„: IoT ๊ธฐ๊ธฐ ์ œ์–ด(์Šค๋งˆํŠธํ™ˆ), ์„ผ์„œ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘, ๋ชจ๋ฐ”์ผ ์•Œ๋ฆผ(Push).

4. ํ•ต์‹ฌ ๋น„๊ต ์š”์•ฝํ‘œ

๋น„๊ต ํ•ญ๋ชฉHTTPWebSocketMQTT
ํ†ต์‹  ๋ชจ๋ธRequest-ResponseFull-DuplexPublish-Subscribe
์—ฐ๊ฒฐ ์ƒํƒœ๋น„์—ฐ๊ฒฐ์„ฑ (Stateless)์—ฐ๊ฒฐ ์ง€ํ–ฅ (Stateful)์—ฐ๊ฒฐ ์ง€ํ–ฅ (Stateful)
๋ฐฉํ–ฅ์„ฑ๋‹จ๋ฐฉํ–ฅ (ํด๋ผ -> ์„œ๋ฒ„)์–‘๋ฐฉํ–ฅ (๋™์‹œ ์ „์†ก)์–‘๋ฐฉํ–ฅ (๋ธŒ๋กœ์ปค ๊ฒฝ์œ )
์˜ค๋ฒ„ํ—ค๋“œ๋†’์Œ (ํฐ ํ—ค๋”)๋‚ฎ์Œ (์ž‘์€ ํ—ค๋”)๋งค์šฐ ๋‚ฎ์Œ (์ตœ์†Œ ํ—ค๋”)
OSI ๊ณ„์ธต์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต (L7)์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต (L7)์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต (L7)

5. ๋ฌด์—‡์„ ์„ ํƒํ•ด์•ผ ํ• ๊นŒ?

  1. "ํ‘œ์ค€์ ์ธ ๋ฐ์ดํ„ฐ ์š”์ฒญ๊ณผ ์‘๋‹ต์ด ํ•„์š”ํ•˜๋‹ค" -> HTTP๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
  2. "์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋”œ๋ ˆ์ด ์—†๋Š” ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…์ด๋‚˜ ๊ฒŒ์ž„์„ ๋งŒ๋“ ๋‹ค" -> WebSocket์ด ์ •๋‹ต์ž…๋‹ˆ๋‹ค.
  3. "์ „๋ ฅ ์†Œ๋ชจ๊ฐ€ ์ ์–ด์•ผ ํ•˜๋Š” ์ž„๋ฒ ๋””๋“œ ๊ธฐ๊ธฐ๋‚˜ ์ˆ˜๋งŒ ๊ฐœ์˜ ์„ผ์„œ๋ฅผ ์ œ์–ดํ•œ๋‹ค" -> MQTT๋ฅผ ๊ฐ•๋ ฅ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

ํ˜„๋Œ€์ ์ธ ์„œ๋น„์Šค๋Š” ์ด๋“ค์„ ํ˜ผํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” HTTP๋กœ ๋กœ๊ทธ์ธํ•˜๊ณ , ์ฑ„ํŒ…์€ WebSocket์œผ๋กœ ์ฃผ๊ณ ๋ฐ›์œผ๋ฉฐ, ์•Œ๋ฆผ ์„œ๋ฒ„๋Š” MQTT๋กœ ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์— ํ‘ธ์‹œ๋ฅผ ๋ณด๋‚ด๋Š” ์‹์ž…๋‹ˆ๋‹ค. ๊ฐ ๋„๊ตฌ์˜ ํŠน์„ฑ์„ ์ดํ•ดํ•˜๊ณ  ์ ์žฌ์ ์†Œ์— ๋ฐฐ์น˜ํ•˜๋Š” ์„ค๊ณ„ ๋Šฅ๋ ฅ์„ ๊ธธ๋Ÿฌ๋ณด์„ธ์š”!